package com.company.Amotic;

import com.company.Main;

import java.util.function.Consumer;

public class Demo1_CounterTest {
    Counter counter = new CounterBasic(); // 计数器 统计

    // 限流 --- 超过一定的处理量，多出来的量 不处理
    public String findUserId() {
        counter.incr(); // i++;
        try {
            if (counter.get() > 3000) {
                return null;
            }
            // TODO userService.find.... // 这段代码 同时调用的数量
        } finally {
            counter.decr(); //并发数   减一
        }
        return "xx";
    }

    public static void main(String[] args) throws InterruptedException {
        final Counter ct = new CounterCAS();

        Main.threadTest(16, item -> {
            long begin = System.nanoTime();
            for (int j = 0; j < 10000; j++) {
                ct.incr(); // i++
            }
            System.out.println("done...运算时间： " + (System.nanoTime() - begin));
        });

        Thread.sleep(6000L);
        System.out.println("计数器最终结果: " + ct.get());
        // 预期结果应该 --- 20000
    }
}

